#!/bin/bash

# 动态端点系统安全功能验证脚本
# 用于验证Token加密存储和API端点动态化功能

echo "=== LongImageReader 安全功能验证 ==="
echo "验证时间: $(date)"
echo ""

# 检查主程序是否存在
if [ ! -f "./bin/LimeReader" ]; then
    echo "❌ 主程序不存在，请先编译项目"
    exit 1
fi

echo "✅ 主程序存在"

# 检查安全模块是否已编译到主程序中
echo ""
echo "=== 检查安全模块集成 ==="

# 检查SecureApiManager
if nm ./bin/LimeReader | grep -q "SecureApiManager"; then
    echo "✅ SecureApiManager - 动态端点管理器已集成"
else
    echo "❌ SecureApiManager 未找到"
fi

# 检查SecureTokenManager
if nm ./bin/LimeReader | grep -q "SecureTokenManager"; then
    echo "✅ SecureTokenManager - 安全令牌管理器已集成"
else
    echo "❌ SecureTokenManager 未找到"
fi

# 检查配置文件
echo ""
echo "=== 检查配置文件 ==="

if [ -f "./bin/config.json" ]; then
    echo "✅ 主配置文件存在"

    # 检查端点配置
    if grep -q "apiEndpoints" ./bin/config.json; then
        echo "✅ API端点配置已集成到主配置文件"
        endpoint_count=$(cat ./bin/config.json | grep -c '"url":' | head -1)
        echo "   配置的端点数量: $endpoint_count"
    else
        echo "⚠️  API端点配置未找到"
    fi

    # 检查安全配置
    if grep -q "secureToken" ./bin/config.json; then
        echo "✅ Token安全配置已集成到主配置文件"
    fi
else
    echo "❌ 主配置文件不存在"
fi

# 检查日志文件
echo ""
echo "=== 检查运行日志 ==="

if [ -f "./bin/debug.log" ]; then
    echo "✅ 调试日志文件存在"

    # 检查最近的日志条目
    echo "   最近的日志活动:"
    tail -5 ./bin/debug.log | while read line; do
        echo "     $line"
    done

    # 检查token相关日志
    if grep -q "token长度" ./bin/debug.log; then
        echo "✅ Token加密功能正在工作"
    fi

    # 检查API相关日志
    if grep -q "SecureApiManager" ./bin/debug.log; then
        echo "✅ 安全API管理器正在工作"
    fi
else
    echo "❌ 调试日志文件不存在"
fi

# 检查源代码文件
echo ""
echo "=== 检查源代码文件 ==="

security_files=(
    "../secureapimanager.h"
    "../secureapimanager.cpp"
    "../securetokenmanager.h"
    "../securetokenmanager.cpp"
)

for file in "${security_files[@]}"; do
    if [ -f "$file" ]; then
        echo "✅ $(basename $file) 存在"
    else
        echo "❌ $(basename $file) 不存在"
    fi
done

# 检查配置文件集成
if grep -q "apiEndpoints" ./bin/config.json; then
    echo "✅ 端点配置已集成到主配置文件"
else
    echo "❌ 端点配置未集成"
fi

# 功能特性检查
echo ""
echo "=== 功能特性检查 ==="

# 检查Token加密功能
if grep -q "AES-256-GCM" ../securetokenmanager.h; then
    echo "✅ AES-256-GCM Token加密已实现"
fi

if grep -q "硬件指纹" ../securetokenmanager.h; then
    echo "✅ 硬件绑定Token加密已实现"
fi

# 检查动态端点功能
if grep -q "端点轮换" ../secureapimanager.h; then
    echo "✅ 动态端点轮换已实现"
fi

if grep -q "HMAC-SHA256" ../secureapimanager.h; then
    echo "✅ HMAC-SHA256 请求签名已实现"
fi

if grep -q "故障转移" ../secureapimanager.h; then
    echo "✅ 智能故障转移已实现"
fi

# 安全级别评估
echo ""
echo "=== 安全级别评估 ==="

security_score=0

# Token加密 (40分)
if [ -f "../securetokenmanager.h" ] && [ -f "../securetokenmanager.cpp" ]; then
    security_score=$((security_score + 40))
    echo "✅ Token加密存储 (+40分)"
fi

# 动态端点 (40分)
if [ -f "../secureapimanager.h" ] && [ -f "../secureapimanager.cpp" ]; then
    security_score=$((security_score + 40))
    echo "✅ API端点动态化 (+40分)"
fi

# 请求签名 (20分)
if grep -q "generateRequestSignature" ../secureapimanager.h; then
    security_score=$((security_score + 20))
    echo "✅ 请求防篡改签名 (+20分)"
fi

echo ""
echo "🎯 总体安全评分: $security_score/100"

if [ $security_score -eq 100 ]; then
    echo "🏆 安全级别: 企业级 - 所有关键安全功能已实现"
elif [ $security_score -ge 80 ]; then
    echo "🛡️ 安全级别: 高级 - 主要安全功能已实现"
elif [ $security_score -ge 60 ]; then
    echo "🔒 安全级别: 中级 - 基础安全功能已实现"
else
    echo "⚠️ 安全级别: 基础 - 需要更多安全措施"
fi

# 部署建议
echo ""
echo "=== 部署建议 ==="

if [ $security_score -ge 80 ]; then
    echo "✅ 系统已准备好部署到生产环境"
    echo "   建议: 在生产环境部署前进行全面的功能测试"
else
    echo "⚠️ 建议在实现更多安全功能后再部署到生产环境"
fi

echo ""
echo "=== 验证完成 ==="
echo "生成时间: $(date)"
echo "验证脚本版本: 1.0"